

// data 为渲染的数据项 template 为子html标签
let reg = /(\{\{(.+?)\}\})/ig
export default function render(obj, template, html) {
    let str = {}
    let copy = html
    html.replace(reg, (_, ...args) => {
        if (!str[args[1]]) str[args[1]] = []
        if (Object.prototype.toString.call(template[args[1]]) === '[object Function]') {
            let s = template[args[1]](obj[args[1]])
            copy = copy.replace(args[0], s)
            return
        }
        obj[args[1]].map((t, _) => {
            str[args[1]].push(template[args[1]].replace(reg, (z, ...args) => {
                const [_, k] = args[1].split(".")
                args[1] = typeof t === 'object' ? t[k] : t
                return args.slice(1, 2).join("")
            }))
        })
        copy = copy.replace(args[0], str[args[1]].join(""))
        return args[1]
    })
    return copy
}
